home *** CD-ROM | disk | FTP | other *** search
- 10REM
- 20REM Binary to Intel Hex converter
- 30REM Pandora/BAS32 version, Feb 1987
- 40REM
- 50CLOSE#0
- 60DIM data 31,binfile 32
- 70INPUT "Name of input binary file? " $binfile
- 80INPUT "Name of output hex file? " out$
- 90in%=OPENIN($binfile)
- 100 IF in%=0 THEN PRINT"Input file does not exist":END
- 110 out%=OPENOUT(out$)
- 120address%=0
- 130REPEAT
- 140PRINT"At address ";~address%
- 150PROCwriterecord
- 160UNTIL EOF#in%
- 170REM write EOF record
- 180BPUT#out%,ASC(":")
- 190FOR I% = 1 TO 3
- 200PROCputhex(0)
- 210NEXT
- 220PROCputhex(1)
- 230PROCputhex(&FF)
- 240BPUT#out%,&0D
- 250CLOSE#0
- 260END
- 270:
- 280DEF PROCputhex(byte%)
- 290byte%=byte% AND &FF
- 300checksum% = (checksum% + byte%) AND &FF
- 310PROCputnibble(byte% DIV 16)
- 320PROCputnibble(byte%)
- 330ENDPROC
- 340:
- 350DEF PROCputnibble(nibble%)
- 360nibble% = nibble% AND &0F
- 370IF nibble%<10 THEN BPUT#out%,nibble%+ASC("0") ELSE BPUT#out%,nibble%+ASC("A")-10
- 380ENDPROC
- 390:
- 400DEF PROCwriterecord
- 410LOCAL I%,J%
- 420checksum% = 0
- 430BPUT#out%,ASC(":")
- 440I%=0
- 450REPEAT
- 460data?I% = BGET#in%
- 470I%=I%+1
- 480UNTIL I%=32 OR EOF#in%
- 490PROCputhex(I%)
- 500PROCputhex(address% DIV 256)
- 510PROCputhex(address%)
- 520PROCputhex(0)
- 530FOR J% = 0 TO I%-1
- 540PROCputhex(data?J%)
- 550NEXT
- 560recsum% = -checksum%
- 570PROCputhex(recsum%)
- 580BPUT#out%,&0D
- 590address% = address% + I%
- 600ENDPROC
- 610:
-